在上篇iOS 逆向<3>:砸壳3>我们介绍了,使用Clutch
进行砸壳,这篇介绍另一个使用dumpdecrypted
一、编译 dumpdecrypted
我们要使用的是生成的动态库dumpdecrypted.dylib
,要想得到dumpdecrypted.dylib这个动态库,只需要从github上下载代码,然后进行编译,生成dumpdecrypted.dylib即可。下方就是使用make命令对dumpdecrypted的源码进行编译。
make编译完成后,文件夹中就会多一个dumpdecrypted.dylib动态库,该动态库就是稍后我们砸壳使用的工具。
二、dumpecrypted.dylib 签名
先找到已经在电脑上面安装的苹果开发者证书, 操作如下:
列出可签名证书, 找到 mac 上面已经安装的证书
security find-identity -v -p codesigning
为 dumpecrypted.dylib 签名, 命令如下:
codesign --force --verify --verbose --sign "iPhone Developer: xxx xxxx (xxxxxxxxxx)" dumpdecrypted.dylib
其中, “iPhone Developer: xxx xxxx (xxxxxxxxxx)” 为你自己本机安装的开发者证书名称.
三 查找目标APP的Main Bundle路径,Sandbox路径
我们需要找到目标APP的Main Bundle路径,Sandbox路径。那么怎么在终端里查找呢。
首先要通过通过ssh连接手机,执行
ssh root@10.105.12.136
收入密码alpine
然后我们有两种方式查找目标APP的两个路径。
3.1: 借助第三方工具
可以安装https://github.com/CoderMJLee/MJAppTools
安装文档安装MJAppTools
后,在通过ssh链接手机后执行
MJAppTools -l
就会列出手机所安装的所有的App
可以看到
Main Bundle路径为:/private/var/containers/Bundle/Application/3E376AA9-1F0E-4939-8D2D-933757835643/SOHUVideo.app
Sandbox路径为:/private/var/mobile/Containers/Data/Application/06D1A964-71D0-4849-B1F6-81126FA187FB
3.2: 原始方式
这种方式,必须先要在手机上打开目标App,
终端执行,过滤出来搜狐APP
ps -e | grep -i so
我们找到了Main Bundle路径为:/var/containers/Bundle/Application/3E376AA9-1F0E-4939-8D2D-933757835643/SOHUVideo.app/SOHUVideo
下面查找 Documents 目录,需要通过cycript了。
终端执行:
cycript -p SOHUVideo
其中,cycript -p XX
后面跟的就是,上面看到的XX.app
的名字。
然后执行cycript脚本:
[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask][0]
找到Sandbox路径为:/var/mobile/Containers/Data/Application/06D1A964-71D0-4849-B1F6-81126FA187FB/Documents/
四、砸壳
4.1:拷贝 dumpdecrypted.dylib 到目标APP 沙盒的Documents路径
拷贝 dumpdecrypted.dylib 到目标APP 沙盒的Documents路径下:
可以用scp指令
scp ~/dumpdecrypted.dylib root@10.105.12.136:/private/var/mobile/Containers/Data/Application/A35753BD-A755-47B4-9166-EEAF50CC7F1B/Documents/
其中10.105.12.136
为手机的ip地址,需要和电脑在同一个局域网中。/private/var/mobile/Containers/Data/Application/A35753BD-A755-47B4-9166-EEAF50CC7F1B/Documents/
为搜狐视频APP的Sandbox
沙盒路径
也可以用iFunBox
,找到目标路径直接拖拽。
4.1:开始砸
cd到Document目录下
cd /private/var/mobile/Containers/Data/Application/A35753BD-A755-47B4-9166-EEAF50CC7F1B/Documents/
执行
DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /private/var/containers/Bundle/Application/3E376AA9-1F0E-4939-8D2D-933757835643/SOHUVideo.app/SOHUVideo
这个指令有点长,总结一下这个指令是在目标App的Sandbox路径的Documents目标下,执行: DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib (Main Bundle路径)
然后在Document路径下,会生成SOHUVideo.decrypted
文件
使用 iFunBox
或者 scp
命令将 SOHUVideo.decrypted
文件导出,即可进行后续的分析。